import re


# 定义正则表达式对象
RE_PHONE = re.compile(r'13\d\d{8}|14[5,7,9]\d{8}|15[0,1,2,3,5,6,7,8,9]\d{8}|166\d{8}|17[1,2,3,5,6,7,8]\d{8}|18\d{8}|19[8,9]\d{8}|\d{3}-\d{8}|\d{4}-\d{7}')  # 电话对象
RE_EMAIL = re.compile(r'[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,3}')  # 邮箱对象
RE_IDCARD = re.compile(r'(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})(\d|X)')  # 18位身份证对象

info = '''faer;mnf;cdjsagrea13766999888#$%^
          &*GRgrfe14766666666fsgd15588888888nxci16699999999';'l
          17100000000sakd010-65433245《和19966677788而且我》？P{|
          gara0875-6754328THJhljkh?ghstrg,634354682@qq.com%^&ferfadr533285929101568hds3435tgf
          53300119711031824X655UI:Ofrweasdfqyhmbhvodag.boiytkk'bncxvn;'jhtgre
       '''
# 定义搜索电话号码的函数
def find_phone(info:str) -> list:
    '''查找电话号码'''
    return RE_PHONE.findall(info)


def find_email(info):
    '''查找邮箱地址'''
    return RE_EMAIL.findall(info)


def find_idcard(info):
    '''查找身份证'''
    return RE_IDCARD.findall(info)


def main():
    print(find_phone(info))    
    print(find_email(info))
    print(find_idcard(info))

if __name__ == "__main__":
    main()    